home *** CD-ROM | disk | FTP | other *** search
/ Utilities Professional 1-1500 / Utilities Professional 1-1500 (1994)(WPD)[!].iso / 07511000 / var0859.dms / var0859.adf / Audiotool.doc < prev    next >
Text File  |  1989-08-10  |  10KB  |  198 lines

  1.     It is recommended that you print this out and then run the program 
  2. and experiment as you read.
  3. ==========
  4.  
  5.     Audiotool was written to provide direct access to the Amiga's sound 
  6. generating hardware.  The Amiga has four Direct Memory Access (DMA)
  7. channels and four Digital to Analog (D/A) Converters (also called DACs).
  8. The DACs feed two audio line outputs (the left and right jacks on the back).
  9.  
  10.     In the normal operating mode, a DMA produces a stream of numbers
  11. (representing an audio waveform) to a DAC which converts it (with help from
  12. a filter stage and other hardware) to an analog signal which is then sent
  13. to a line output (represented by a speaker).  The line output provides
  14. a continuos analog signal varying in strength within the limits of
  15. +/- 0.4 Volts.  If the line is connected to an amplifier and speaker,
  16. the speaker vibrates, generating air vibrations we call sound.
  17.  
  18.     The timbre of the sound (the quality of a sound which differentiates
  19. it from others of the same frequency and amplitude) is controlled by the
  20. stream of numbers feeding the DMA.  These are represented by four waveform
  21. representations in boxes (sine, square, ascending and descending sawtooth
  22. respectively).  You may select one by clicking on a box with the left mouse
  23. button.  The pitch or frequency of the sound is determined by two factors,
  24. the number of samples in the waveform representation, and the sampling
  25. frequency being used.  Each number in the waveform representation is called
  26. a sample.  The sequence of samples (in this program) represents one waveform
  27. cycle.  One waveform cycle is one up and down movement of a wave (as
  28. represented by the waveform boxes).  The top row of numbered boxes
  29. represent the number of samples in the waveform.  A different number may be
  30. selected by clicking in a box with the left mouse button.  The more samples,
  31. the lower the output frequency.
  32.  
  33.     The sampling frequency is the number of samples that are output from
  34. the DMA every second.  This is controlled by the top slide pot.
  35. This pot may be thought of as a speed control for the DMA.  The number
  36. selected by this pot is displayed in the box just above the slide pot
  37. on the left.  This box is also a numeric input gadget.  By clicking the
  38. left mouse button in this box and then using the delete, backspace, and
  39. numeric keys, you may enter a new number.  But its easier to just hold
  40. the left mouse button down on the slide pot and move it back and forth.
  41. As the number selected increases, the output frequency decreases.
  42.  
  43.     The output frequency is displayed above the slide gadget to the right 
  44. in Hertz.  One Hertz is one cycle of sound per second.
  45.  
  46.     The DAC also has a slide pot, it controls the volume or amplitude of 
  47. the sound (how loud it is).  It operates similar to the other slide gadget.
  48. The bigger the number, the louder the sound.
  49.  
  50.     The outputs of the DACS are hardwired to the line outputs.  In other 
  51. words, there is no way to move a particular DAC's output to the other line 
  52. (left or right) instead of the one it is connected to.
  53.  
  54.     The DMA inputs and output are much more versatile however.  Each DMA 
  55. has an on/off switch.  It is the crude knife switch image just under the
  56. DMA box.  Each knife switch may be toggled on/off or up/down by clicking 
  57. the left mouse button over the image.  (Yes, yes, always the left button,
  58. the right button is useless with this program, there aren't even any menus
  59. for Pete's sake.)  The speed of a DMA controller may be switched from the 
  60. manual pot to the output of the DMA on its left.  This means that the 
  61. frequency of the right DMA's output will vary by the waveform selected as 
  62. input by the left DMA unit.  Try this example, turn on the second DMA and
  63. select a nice audible tone.  Now turn on the first DMA and select a 
  64. frequency of about 2 Hz.  To do this, select the 128 samples box and then 
  65. move the frequency slide to the right.  As you get below 30 Hz, the sound
  66. will become inaudible except for a clicking sound if you have selected a 
  67. waveform with a sharp edge.  Now click the second DMA's top toggle switch 
  68. (the one that disconnects the DMA from the frequency slide gadget and 
  69. connects it to the first DMA's output).  Now select different waveforms.  
  70. Fun, no?
  71.  
  72.     In the same way, the volume of a DAC may go from a steady level under
  73. manual control to modulation by the DMA channel on it's left.  You can 
  74. even modulate both frequency and volume at the same time.
  75.  
  76.  
  77.  
  78. Features:
  79.  
  80.     There is no way to quickly switch the waveform input of a DMA
  81. channel.  One must either turn off the DMA channel for more than two
  82. samples or let the hardware automatically reload its input address 
  83. register after it finishes its current cycle.  This program uses the 
  84. latter.  It becomes apparent when small frequencies are being used.  
  85. Waveforms will not switch immediately when alternate waveforms are 
  86. selected.  When switches are thrown changing the routing of DMA output,
  87. some strange sounds are produced until the DMA resets itself with the 
  88. new waveform.  Sometimes, the DMA does not recover by itself.  In these
  89. cases, the former method may be manually used by clicking off the DMA, 
  90. and then clicking it back on.
  91.  
  92. Equations:
  93.  
  94.     The frequency slide pot produces a number which is output to the
  95. Amiga's period register.  It is a clock divider value.  It divides the
  96. master clock rate of 3,579,545 ticks per second to produce the sampling
  97. frequency used by the DMA unit.
  98.  
  99. Letting         P = period register value
  100.                 N = number of samples per cycle in waveform representation
  101.                 F = output frequency
  102.  
  103.   cycles             ticks               ticks                samples
  104. F ------ = 3,579,545 ------ divided by P ------- divided by N -------
  105.   second             second              samples              cycle
  106.  
  107.  
  108.     The volume level is represented in decibels.  This is the ratio of the
  109. output level to the maximum output level.  The volume register can take on
  110. values from 1 to 64 (0 is off) yielding dB values according to the following
  111. formula:
  112.  
  113. Letting         V = volume register value
  114.                 D = decibel rating
  115.  
  116.            D = 20 * common log ( V / 64 )
  117.  
  118.  
  119.  
  120. Technical notes:
  121.  
  122.     I have tried to produce a program that graphically interacts with 
  123. the Amiga hardware that is simple yet not limiting.
  124.  
  125.     The DMA on/off switches each represent one bit in the DMA control
  126. register (DMACON).  The remaining three switches per channel represent
  127. two bits in the audio control register (ADKCON).  Hence not all switch
  128. combinations are legal.  Opening up the switch that controls the feed
  129. into the top of a DAC for instance, must force the closure of at least
  130. one of the pot control switches for the channel on the DAC's right.
  131. The program arbitrarily closes the period control switch in this
  132. case because the author feels this is the most interesting case of the
  133. three.  Here is a chart showing the bit values and the corresponding
  134. switch positions.
  135.  
  136.  feed     feed       "DAC feed"   "period feed"   "volume feed"
  137. period   volume        switch        switch          switch
  138.  
  139.   0        0           closed         open            open
  140.   1        0            open         closed           open
  141.   0        1            open          open           closed
  142.   1        1            open         closed          closed
  143.  
  144.     To allow a full range of frequencies, I had to split the operation
  145. into six octaves.  The middle four allow the frequency pot to select
  146. period values from 200 to 400.  This is to allow reasonable operation of
  147. the slide gadget.  However, any valid period value may be input with
  148. the numeric keys.  Valid values are 124 to 65,535 inclusive.  The outer
  149. two octave ranges lift the normal value restrictions to allow for more
  150. than a full octave.  Here is a chart that shows what I mean.
  151.  
  152. "samples"    Pot selectable       Frequency
  153.  number      period values          range
  154.  
  155.    4          124 to   400    7.2 kHz to 2.2 kHz
  156.    8          200 to   400    2.2 kHz to 1.1 kHz
  157.   16          200 to   400    1.1 kHz to 560  Hz
  158.   32          200 to   400    560  Hz to 280  Hz
  159.   64          200 to   400    280  Hz to 140  Hz
  160.  128          200 to 65535    140  Hz to 0.43 Hz
  161.  
  162.     The Amiga 1000 has a low pass filter that operates from 4 kHz to 7 kHz.
  163. It is possible to hear antialising distortion above 5 kHz with this program
  164. for this reason.
  165.  
  166.     Each octave range has its own set of samples for each of the four
  167. waveforms.  This means that there are 6 * 4 or 24 sets of samples, not 
  168. just four.  But wait, its still more complicated yet.  The DAC's take 
  169. values ranging from -127 to 128, so that when a DMA is directly feeding
  170. a DAC, the waveform samples must have values ranging from -127 to 128.
  171. But when a DMA is switched to modulate the next channel's period register,
  172. it must produce valid period register values.  These values range from 124
  173. to 65,535 as we have seen.  This means another 24 sets of waveform sample 
  174. values.  When modulating periods, the samples take on values from 200 to
  175. 400, thus modulating frequencies by exactly one octave.  When modulating 
  176. the next channel's volume register, values from 10 to 64 are used, thus 
  177. modulating volume by 16 decibels.  When modulating both volume and period,
  178. twice as many samples are required.  One for volume, then one for period,
  179. etc.  Therefore there are:
  180.  
  181. 4 (waveforms) * 6 (octave ranges) * 4 (operating modes) = 96 (sets of samples)
  182.  
  183. The program automatically switches between these as required to make
  184. operation seem simple.
  185.  
  186.   The source code is available to answer other questions.
  187.  
  188. This program expects to run in a 640 x 200 sized workbench window.
  189. A custom window may be opened instead by making a quick change to
  190. window.c.
  191.  
  192. Comments, ideas, code improvements, and questions may be sent
  193. to the author.  No reply guaranteed.
  194.  
  195.         David Reynolds
  196.         32 Greenwood Rd.
  197.         Burlington, Ma  01803
  198.